<?php

namespace SisesporteAdmin\Form;

use \Zend\Form\Form,
    \Zend\Form\Element\Select;

class TurmaForm extends Form {

    protected $entity;

    public function __construct($name = null, $entity = NULL) {
        parent::__construct('turma');
        $this->entity = $entity;

        $this->setAttribute('method', 'post');

        $this->add(array(
            'name' => 'sqTurma',
            'attibutes' => array(
                'type' => 'hidden'
            )
        ));

        $this->add(array(
            'name' => 'coTurma',
            'options' => array(
                'type' => 'text',
                'label' => 'Código*:'
            ),
            'attributes' => array(
                'id' => 'coTurma',
                'class' => 'input-medium',
                'maxlength' => '20',
                'placeholder' => 'Entre com o Código'
            )
        ));

        $this->add(array(
            'name' => 'nuVaga',
            'options' => array(
                'type' => 'number',
                'label' => 'Nº de vagas*:'
            ),
            'attributes' => array(
                'id' => 'nuVaga',
                'placeholder' => 'vagas disponíveis',
                'class' => 'input-medium'
            )
        ));

        $this->add(array(
            'name' => 'nuAno',
            'options' => array(
                'type' => 'text',
                'label' => 'Ano*:'
            ),
            'attributes' => array(
                'id' => 'nuAno',
                'class' => 'input-mini',
                'value' => date('Y')
            )
        ));

        $modalidade = new Select();
        $modalidade->setLabel("Modalidade*:")
                ->setName("sqModalidade")
                ->setOptions(array('value_options' => $this->getResultArray('Sisesporte\Entity\Modalidade'),
                    'empty_option' => '-- Selecione --')
        );
        $this->add($modalidade);

        $sqNivel = new Select();
        $sqNivel->setLabel("Nível*:")
                ->setName("sqNivel")
                ->setOptions(array('value_options' => $this->getResultArray('Sisesporte\Entity\TipoNivelEquipe'),
                    'empty_option' => '-- Selecione --')
        );
        $this->add($sqNivel);

        $sqTurmaDia = new Select();
        $sqTurmaDia->setLabel("Dias da semana*:")
                ->setName("sqTurmaDia")
                ->setOptions(array('value_options' => $this->getResultArray('Sisesporte\Entity\TurmaDia'),
                    'empty_option' => '-- Selecione --')
        );
        $this->add($sqTurmaDia);

        $sqHorarioInicio = new Select();
        $sqHorarioInicio->setLabel("Horário de Inicio*:")
                ->setName("sqHorarioInicio")
                ->setOptions(array('value_options' => $this->getResultArray('Sisesporte\Entity\HorarioFuncionamento'),
                    'empty_option' => '-- Selecione --')
        );
        $this->add($sqHorarioInicio);

        $this->add(array(
            'type' => 'Zend\Form\Element\Select',
            'name' => 'sqHorarioTermino',
            'options' => array(
                'label' => 'Horário término*:',
                'empty_option' => '-- Selecione --',
                'value_options' => $this->getResultArray('Sisesporte\Entity\HorarioFuncionamento'),
            ),
            'attributes' => array(
                'id' => 'sqHorarioTermino'
            )
        ));

        $this->add(array(
            'type' => 'Zend\Form\Element\Select',
            'name' => 'sqSituacaoTurma',
            'options' => array(
                'label' => 'Situação:',
                'empty_option' => '-- Selecione --',
                'value_options' => $this->getResultArray('Sisesporte\Entity\TipoSituacaoTurma'),
            ),
            'attributes' => array(
                'id' => 'sqSituacaoTurma'
            )
        ));


        $this->add(array(
            'type' => 'Zend\Form\Element\Select',
            'name' => 'sqTipoFaixaEtaria',
            'options' => array(
                'label' => 'Faixa Etária*:',
                'empty_option' => '-- Selecione --',
                'value_options' => $this->getResultArray('Sisesporte\Entity\TipoFaixaEtaria'),
            ),
            'attributes' => array(
                'id' => 'sqTipoFaixaEtaria'
            )
        ));

        $this->add(array(
            'type' => 'Zend\Form\Element\Select',
            'name' => 'sqProfessorApto',
            'options' => array(
                'label' => 'Professores Aptos*:',
                'empty_option' => '-- Selecione uma modalidade --',
                'value_options' => array(),
            ),
            'attributes' => array(
                'id' => 'sqProfessorApto'
            )
        ));

        $this->add(array(
            'type' => 'Zend\Form\Element\Radio',
            'name' => 'inSemestre',
            'options' => array(
                'label' => 'Semestre*:',
                'value_options' => array(
                    '1' => '1º',
                    '2' => '2º',
                ),
            )
        ));

        $this->add(array(
            'type' => 'Zend\Form\Element\Radio',
            'name' => 'inSorteio',
            'options' => array(
                'label' => 'Sorteio*:',
                'value_options' => array(
                    TRUE => 'Sim',
                    FALSE => 'Não',
                ),
            )
        ));

        $this->add(array(
            'type' => 'Zend\Form\Element\Radio',
            'name' => 'inPreTeste',
            'options' => array(
                'label' => 'Teste*:',
                'value_options' => array(
                    TRUE => 'Sim',
                    FALSE => 'Não',
                ),
            )
        ));
        
        $this->add(array(
            'name' => 'dtInicioTeste',
            'options' => array(
                'type' => 'text',
                'label' => 'Data Inicio dos Testes*:'
            ),
            'attributes' => array(
                'id' => 'dtInicioTeste',
                'class' => 'input-medium'
            )
        ));
        
        $this->add(array(
            'name' => 'dtFimTeste',
            'options' => array(
                'type' => 'text',
                'label' => 'Data Fim dos Testes*:'
            ),
            'attributes' => array(
                'id' => 'dtfimTeste',
                'class' => 'input-medium'
            )
        ));
        
        $this->add(array(
            'name' => 'dtDivulgacao',
            'options' => array(
                'type' => 'text',
                'label' => 'Data de Divulgação*:'
            ),
            'attributes' => array(
                'id' => 'dtDivulgacao',
                'class' => 'input-medium'
            )
        ));
        
        $this->add(array(
            'name' => 'dtSorteio',
            'options' => array(
                'type' => 'text',
                'label' => 'Data do Sorteio*:'
            ),
            'attributes' => array(
                'id' => 'dtSorteio',
                'class' => 'input-medium'
            )
        ));

        $this->add(array(
            'name' => 'submit',
            'type' => 'Zend\Form\Element\Submit',
            'attributes' => array(
                'value' => 'Salvar',
                'class' => 'btn btn-primary pull-right',
                'title' => 'Salvar'
            )
        ));
    }

    /**
     * @return array
     */
    protected function getResultArray($repository) {
        $repo = $this->entity->getRepository($repository);
        return $repo->fetchPairs();
    }
}
